/*
 * @Author: hrg
 * @Date: 2024-01-25 15:58:40
 * @LastEditTime: 2024-01-27 09:32:39
 * @FilePath: \study_go\study06_gin\gin_demo06\server\main.go
 * @Description:上传文件（上传单个文件）
 */
package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.New()

	// 限制上传的最大尺寸
	r.MaxMultipartMemory = 8 << 20

	r.POST("/upload", test2)

	r.Run(":8181")

}
func test(c *gin.Context) {

	// 获取单个文件
	file, err := c.FormFile("file")
	if err != nil {
		c.JSON(500, gin.H{
			"error": err.Error(),
		})
	}

	// 更改路径
	filePath := "./file/" + file.Filename
	c.SaveUploadedFile(file, filePath)
	c.String(200, file.Header["Content-Type"][0])
}

// UI上传的文件类型进行限制
func test2(c *gin.Context) {

	file, _ := c.FormFile("file")
	// 首先定义切片用于存放允许上传的文件类型：
	okFileType := []string{"image/jpeg", "image/png", "application/pdf"}
	//  定义布尔值，用于限制是否能够上传文件
	isOKUpData := false

	for _, v := range okFileType {
		if v == file.Header["Content-Type"][0] {

			isOKUpData = true
			break
		}

	}

	if !isOKUpData {
		c.JSON(400, gin.H{
			"error": "Invalid file type",
		})
		return
	}

	newFilePath := "./file/" + file.Filename
	c.SaveUploadedFile(file, newFilePath)
	c.String(200, file.Filename)

}
